A storage server is a computer system that is used to store and retrieve data on behalf of one or more clients on a network. A storage server operates on behalf of one or more clients to store and manage data in a set of mass storage devices, such as magnetic or optical storage-based disks or tapes. In conventional network storage systems, the mass storage devices can be organized into one or more groups of drives (e.g., redundant array of inexpensive drives (RAID)).
A storage server can be configured to service file-level requests from clients, as in the case of file servers used in a network attached storage (NAS) environment. Alternatively, a storage server can be configured to service block-level requests from clients, as done by storage servers used in a storage area network (SAN) environment. Further, some storage servers are capable of servicing both file-level and block-level requests, as done by certain storage servers made by NetApp, Inc. of Sunnyvale, Calif.
Distributed network storage architectures can include one or more “network” (N) modules, one or more “data” (D) modules, and an interconnect protocol to communicate data between N-modules and D-modules. While this approach works for massively distributed systems and horizontal scale-out, the throughput, latency, availability and service levels required for “Tier 1” applications demand highly optimized, low overhead data paths within a storage system.
Tier 1 is an enterprise level of computing or storage system where there is a guaranteed quality of service under specified conditions including system failures. For example, a Tier 1 system might provide access to bank ATM machines which will allow access 24/7 even in the presence of some hardware or software failures. This includes a maximum response time. Symmetric access (i.e., to provide the required quality of service and guaranteed response time, multiple paths are needed and those paths require identical or very similar response times) as well as balancing loads are important in Tier 1 system implementations to provide a storage system capable of scaling while providing high, stable, predictable performance and guaranteed service levels. Tier 1 SAN storage systems provide multiple redundant paths from clients to storage systems for redundancy and scaling Input/Output (I/O) performance. Storage systems run multi-pathing software to exploit these redundant paths to their storage devices. In order for the redundant paths to be used seamlessly for load balancing I/O and for handling controller or path failures, these paths are presented as “symmetric”.
In certain storage systems, the existence of different data paths from clients to stored data result in different data access times or latencies. This in turn can result in unbalanced load. Also, data often has to go through multiple levels of switched connections between client applications, modules, storage disks, and interfaces in a read or write process. In a read or write process, multiple duplicate copies of data being read or written often need to be made, to go through those multiple interconnections. To improve the performance of storage servers and to provide predictable/stable performance, therefore, it is desirable to reduce the latency and improve throughput efficiencies by optimizing the data path between the client applications and the disk storages and reducing redundant copies of data. Further, it is desirable to implement symmetric access and balanced load for a Tier 1 system.